package net.csdn.business.discuss.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import net.csdn.business.discuss.api.model.dto.*;
import net.csdn.business.discuss.api.model.entity.DiscussComment;
import net.csdn.business.discuss.api.model.query.DiscussCommentQuery;
import net.csdn.business.discuss.api.model.vo.DiscussCommentVO;

import java.util.List;


/**
 * @ClassName IDiscussCommentService
 * @Description 讨论评论Service接口
 * @Author zhangyl
 * @Date 2023/7/18 11:22
 */
public interface IDiscussCommentService extends IService<DiscussComment>
{

    /**
     * 分页查询讨论评论
     *
     * @param query 讨论评论详细信息
     * @return 讨论评论
     */
    public Page<DiscussCommentVO> findPageList(DiscussCommentQuery query) throws Exception;


    /**
     * 分页查询讨论评论的回复分页列表
     *
     * @param query 讨论评论详细信息
     * @return 讨论评论
     */
    public Page<DiscussCommentVO> findReplyPageList(DiscussCommentQuery query) throws Exception;

    /**
     * 根据id查询讨论评论详细信息
     * 
     * @param id 讨论评论主键
     * @return 讨论评论
     */
    public DiscussCommentVO selectDiscussCommentById(String id);

    /**
     * 查询讨论评论列表
     * 
     * @param query 讨论评论
     * @return 讨论评论集合
     */
    public List<DiscussCommentVO> selectDiscussCommentList(DiscussCommentQuery query);

    /**
     * 新增讨论评论
     * 
     * @param params 讨论评论
     * @return 结果
     */
    public String insertDiscussComment(NewDiscussCommentDTO params);

    /**
     * 新增讨论评论的回复
     *
     * @param params 讨论评论
     * @return 结果
     */
    public Integer insertDiscussReply(NewDiscussReplyDTO params);

    /**
     * 修改讨论评论
     * 
     * @param params 讨论评论
     * @return 结果
     */
    public Integer updateDiscussComment(UpdateDiscussCommentDTO params);

    /**
     * 修改讨论评论的回复
     *
     * @param params 评论的回复
     * @return 结果
     */
    public Integer updateDiscussReply(UpdateDiscussReplyDTO params);

    /**
     * 删除讨论评论信息
     * 
     * @param params 讨论评论主键
     * @return 结果
     */
    public Integer deleteDiscussCommentById(DeleteResourceDTO params);


    /**
     * 删除讨论回复
     *
     * @param params 讨论评论主键
     * @return 结果
     */
    public Integer deleteDiscussReplyById(DeleteResourceDTO params);


    /**
     * 根据discussId异步删除所属评论
     *
     * @param discussId 讨论评论主键
     * @return 结果
     */
    public void deleteDiscussCommentByDiscussId(String discussId);


    /**
     * 更新discuss_comment回复数量
     *
     * @param commentId 主键
     * @return 结果
     */
    public Integer updateReplyTotal(String commentId, Integer sum);


    /**
     * @Author zhangyl
     * @Description 标记为采纳回复
     * @Date 17:13 2023/7/19
     * @Param
     * @return
     **/
    public Integer remarkAnswer(RemarkAnswerDTO params);

    /**
     * @Author zhangyl
     * @Description 标记为采纳回复
     * @Date 17:13 2023/7/19
     * @Param
     * @return
     **/
    public Integer unRemarkAnswer(RemarkAnswerDTO params);


    public Integer updateAuditStatus(UpdateAuditStatusDTO params);


    public Integer deleteAnswerRemark(String sourceId,Integer sourceType);

    public Integer syncDelete(SyncDeleteDTO params);
}
